Skip to content

feat(foundations): update config for [04.2026] release#2083

Open
reveloper wants to merge 20 commits into
mainfrom
config-update
Open

feat(foundations): update config for [04.2026] release#2083
reveloper wants to merge 20 commits into
mainfrom
config-update

Conversation

@reveloper
Copy link
Copy Markdown
Collaborator

@reveloper reveloper commented Apr 14, 2026

Closes #2074.

Summary by CodeRabbit

  • Documentation
    • Expanded Param 29 docs to note its constructor evolution and new consensus fields, and added on-chain TL-B schema for multiple consensus config versions.
    • Added full Param 30: consensus extension section (gated by v2026.03 testnet / v2026.04 mainnet), documenting simplex config variants, fallback semantics to pre-2.0 catchain config, and an extensible noncritical_params map with encoding rules.
    • Included a table of recognized noncritical param IDs (0–14) and mainnet defaults (only 0, 1, 13 set).

Review Change Stack

@reveloper reveloper requested a review from a team as a code owner April 14, 2026 06:13
@reveloper reveloper marked this pull request as draft April 14, 2026 06:13
@github-actions

This comment has been minimized.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 14, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e12702eb-fc01-4390-b396-682641e5b8fe

📥 Commits

Reviewing files that changed from the base of the PR and between 22c529f and e561d74.

📒 Files selected for processing (1)
  • foundations/config.mdx

📝 Walkthrough

Walkthrough

Expanded Param 29 with consensus_config_v4 details and added a new Param 30 section documenting TL‑B schemas for simplex_config constructors, TON release gating, optional mc/shard ref semantics, and a 0–14 noncritical_params table with encodings and defaults.

Changes

Param 29 and 30 documentation

Layer / File(s) Summary
Param 29 description
foundations/config.mdx
Updates Param 29 text describing consensus_config_v4#d9, including use_quic: Bool and catchain_max_blocks_coeff:uint32.
Param 29 on-chain schema
foundations/config.mdx
Adds TL‑B constructors for consensus_config#d6, consensus_config_new#d7, consensus_config_v3#d8, and consensus_config_v4#d9; clarifies use_quic meaning across Params.
Param 30: Consensus extension
foundations/config.mdx
New section gated by TON v2026.03/v2026.04; TL‑B for simplex_config#21, simplex_config_v2#22, new_consensus_config_all#10; explains optional mc/shard refs and noncritical_params HashmapE(8,uint32) with IDs 0–14, defaults, and encoding rules.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~12 minutes

Poem

🐰 I hopped through docs with a cheerful sound,
Param twenty-nine and thirty newly found,
Schemas and tables in tidy array,
TON's consensus blooms in bright display,
A nibble of code, a joyful bound.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(foundations): update config for [04.2026] release' clearly and specifically describes the main change—updating configuration documentation for the April 2026 release, which aligns with the PR's primary objective.
Linked Issues check ✅ Passed The PR successfully addresses both objectives from issue #2074: it documents Config 30 (new consensus extension section with simplex_config variants) and documents Consensus_config_v4 changes (including use_quic and catchain_max_blocks_coeff).
Out of Scope Changes check ✅ Passed All changes are documentation updates to foundations/config.mdx directly related to the April 2026 release requirements; no out-of-scope alterations detected beyond the stated objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch config-update

Warning

Review ran into problems

🔥 Problems

Git: Failed to clone repository. Please run the @coderabbitai full review command to re-trigger a full review. If the issue persists, set path_filters to include or exclude specific files.

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the updates to foundations/config.mdx: I have a couple of suggestions to tighten the Aside usage and sentence spacing; please apply the inline suggestions.

Comment thread foundations/config.mdx
Comment thread foundations/config.mdx Outdated
@mintlify
Copy link
Copy Markdown

mintlify Bot commented Apr 14, 2026

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
mintlify-ton-docs 🟢 Ready View Preview Apr 14, 2026, 6:23 AM

💡 Tip: Enable Workflows to automatically generate PRs for you.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
foundations/config.mdx (2)

467-469: ⚠️ Potential issue | 🟠 Major

Use the required Aside prop format consistently.

This section mixes <Aside> (no type) and <Aside caution>. If Aside requires a type prop, both should be normalized to type="note" / type="caution" to avoid inconsistent rendering.

Suggested fix
-<Aside>
+<Aside type="note">
   Introduced with [TON v2026.04](https://github.com/ton-blockchain/ton/releases/tag/v2026.04) update.
 </Aside>
...
-<Aside caution>
+<Aside type="caution">
   `simplex_config#21` unused, scheduled for removal
 </Aside>

Also applies to: 496-498

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@foundations/config.mdx` around lines 467 - 469, The Asides in this section
use mixed syntax ("<Aside>" and "<Aside caution>") which causes inconsistent
rendering; update all Aside usages (including the occurrence around lines noted
and the other occurrence at 496-498) to the explicit prop form by changing
"<Aside>" to "<Aside type=\"note\">" and "<Aside caution>" to "<Aside
type=\"caution\">", ensuring every Aside uses a type prop consistently and
matches the required component API.

471-471: ⚠️ Potential issue | 🟡 Minor

Add the missing space between sentences.

There is no space after the closing parenthesis before `ConfigParam 30`, which hurts readability.

Suggested fix
-This parameter carries per-workchain configuration for the Catchain 2.0 consensus path ([Simplex](https://github.com/ton-blockchain/simplex-docs/blob/main/Simplex.md)).`ConfigParam 30` does not fully replace `ConfigParam 29`. At runtime, the node still copies `max_block_size` and `max_collated_data_size` from `ConfigParam 29` into `ton::NewConsensusConfig`.
+This parameter carries per-workchain configuration for the Catchain 2.0 consensus path ([Simplex](https://github.com/ton-blockchain/simplex-docs/blob/main/Simplex.md)). `ConfigParam 30` does not fully replace `ConfigParam 29`. At runtime, the node still copies `max_block_size` and `max_collated_data_size` from `ConfigParam 29` into `ton::NewConsensusConfig`.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@foundations/config.mdx` at line 471, The sentence in the documentation is
missing a space after the closing parenthesis before `ConfigParam 30`; update
the text around the mention of Catchain 2.0 (Simplex) so there is a space
between the closing parenthesis and the inline code token `ConfigParam 30`,
ensuring the sentence reads "... Simplex). `ConfigParam 30` ..." and preserving
the rest of the sentence that references `ConfigParam 29` and
`ton::NewConsensusConfig`.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@foundations/config.mdx`:
- Line 529: Replace the forbidden lowercase term "id"/"Id" with the allowed
uppercase "ID" consistently in the prose and table headers where the schema
mentions parameter identifiers—specifically update the `noncritical_params`
table row (currently "`noncritical_params` | `HashmapE 8 uint32` | Sparse map
from parameter id to raw 32-bit value") and the other occurrences noted (lines
referencing parameter id at 533, 551, 586) so they read "ID" (e.g., "parameter
ID" and table header "ID") while preserving surrounding text and types like
`HashmapE 8 uint32`.

---

Duplicate comments:
In `@foundations/config.mdx`:
- Around line 467-469: The Asides in this section use mixed syntax ("<Aside>"
and "<Aside caution>") which causes inconsistent rendering; update all Aside
usages (including the occurrence around lines noted and the other occurrence at
496-498) to the explicit prop form by changing "<Aside>" to "<Aside
type=\"note\">" and "<Aside caution>" to "<Aside type=\"caution\">", ensuring
every Aside uses a type prop consistently and matches the required component
API.
- Line 471: The sentence in the documentation is missing a space after the
closing parenthesis before `ConfigParam 30`; update the text around the mention
of Catchain 2.0 (Simplex) so there is a space between the closing parenthesis
and the inline code token `ConfigParam 30`, ensuring the sentence reads "...
Simplex). `ConfigParam 30` ..." and preserving the rest of the sentence that
references `ConfigParam 29` and `ton::NewConsensusConfig`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 07566784-21b4-4dfa-8291-aada627ca4ce

📥 Commits

Reviewing files that changed from the base of the PR and between 8a79136 and 88e9d67.

📒 Files selected for processing (1)
  • foundations/config.mdx

Comment thread foundations/config.mdx Outdated
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@github-actions

This comment has been minimized.

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@github-actions

This comment has been minimized.

@novusnota novusnota changed the title feat(foundation): Update config for [04.2026] release feat(foundations): update config for [04.2026] release Apr 14, 2026
Copy link
Copy Markdown
Collaborator

@novusnota novusnota left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fact-checking...

@novusnota novusnota marked this pull request as ready for review April 14, 2026 19:00
@novusnota novusnota requested a review from Kaladin13 April 14, 2026 19:00
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (2)
foundations/config.mdx (2)

510-518: Consider removing the duplicated simplex_config_v2#22 TL-B block.

The same constructor is already shown in Line 484–Line 488. Keeping only one canonical snippet reduces maintenance drift.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@foundations/config.mdx` around lines 510 - 518, The file contains a
duplicated TL-B block for the constructor simplex_config_v2#22 (showing
flags:(## 7), use_quic, slots_per_leader_window, noncritical_params:(HashmapE 8
uint32) = NewConsensusConfig); remove the redundant copy so only the canonical
simplex_config_v2#22 snippet remains (keep the first/most complete occurrence
and delete the later duplicate), and ensure any surrounding references still
point to the retained block.

471-471: Prefer a pinned Simplex spec link instead of main.

For release documentation, linking to main can drift over time. Consider linking to a tagged release or commit SHA to keep April 2026 docs stable.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@foundations/config.mdx` at line 471, The docs link to the Simplex spec
currently pointing at the repo "main" branch—replace that mutable URL with a
pinned release tag or specific commit SHA so the April 2026 docs remain stable;
locate the markdown line referencing the Simplex URL (the anchor text "Simplex"
in foundations/config.mdx) and update the href to a release-tagged URL or commit
permalink, keeping the link text unchanged and optionally adding the tag/commit
in parentheses for clarity.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@foundations/config.mdx`:
- Around line 510-518: The file contains a duplicated TL-B block for the
constructor simplex_config_v2#22 (showing flags:(## 7), use_quic,
slots_per_leader_window, noncritical_params:(HashmapE 8 uint32) =
NewConsensusConfig); remove the redundant copy so only the canonical
simplex_config_v2#22 snippet remains (keep the first/most complete occurrence
and delete the later duplicate), and ensure any surrounding references still
point to the retained block.
- Line 471: The docs link to the Simplex spec currently pointing at the repo
"main" branch—replace that mutable URL with a pinned release tag or specific
commit SHA so the April 2026 docs remain stable; locate the markdown line
referencing the Simplex URL (the anchor text "Simplex" in
foundations/config.mdx) and update the href to a release-tagged URL or commit
permalink, keeping the link text unchanged and optionally adding the tag/commit
in parentheses for clarity.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 9b7bf207-e7ed-47fa-bd4e-844dd94dae05

📥 Commits

Reviewing files that changed from the base of the PR and between 88e9d67 and 22c529f.

📒 Files selected for processing (1)
  • foundations/config.mdx

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the updates to foundations/config.mdx: there’s one inline suggestion to improve clarity and consistency in the QUIC configuration description, so please apply the inline suggestion.

Comment thread foundations/config.mdx
Comment thread foundations/config.mdx Outdated
Comment thread foundations/config.mdx Outdated
@reveloper
Copy link
Copy Markdown
Collaborator Author

ConfigParam 29 not deep-linked to the on-page section.

Hey, I asked Tonviewer devs if they can add this soon, so I'll deeplink this as well.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

@github-actions

This comment has been minimized.

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the careful work on foundations/config.mdx: I’ve left a couple of suggestions there, please apply the inline suggestions to tighten the consensus configuration documentation.

Comment thread foundations/config.mdx
Comment thread foundations/config.mdx
@reveloper
Copy link
Copy Markdown
Collaborator Author

@delovoyhomie, ready for review.

Comment thread foundations/config.mdx
Comment on lines +558 to +559
- `use_quic`: Whether the QUIC transport is used instead of RLDP2. Set to **True** in mainnet.
- `slots_per_leader_window`: Number of consecutive slots assigned to one leader. Set to **4** in mainnet.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bolding values like **True** and **4** falls under the no-bold-on-tokens rule of the style guide (see emphasis), code font keeps the literal grep-friendly and matches how Bool values are written elsewhere in the repo (lowercase)

Suggested change
- `use_quic`: Whether the QUIC transport is used instead of RLDP2. Set to **True** in mainnet.
- `slots_per_leader_window`: Number of consecutive slots assigned to one leader. Set to **4** in mainnet.
- `use_quic`: Whether the QUIC transport is used instead of RLDP2. Set to `true` on mainnet.
- `slots_per_leader_window`: Number of consecutive slots assigned to one leader. Set to `4` on mainnet.

Comment thread foundations/config.mdx
- `max_block_bytes` — maximum block size.
- `max_collated_bytes` — maximum size of serialized block correctness proofs.

The `noncritical_params` dictionary contains tunable timing and DoS-protection parameters that might differ between validators:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tiny but the phrasing might differ between validators reads as if every validator runs its own noncritical config, which isn't the case - the dictionary lives in ConfigParam 30 on-chain, so all validators apply the same values. could we soften to something like tunable across config updates without changing the block.tlb layout?

Suggested change
The `noncritical_params` dictionary contains tunable timing and DoS-protection parameters that might differ between validators:
The `noncritical_params` dictionary contains tunable timing and DoS-protection parameters that can be changed via a config update without altering the `block.tlb` layout:

Comment thread foundations/config.mdx
- `slots_per_leader_window`: Number of consecutive slots assigned to one leader. Set to **4** in mainnet.
- `noncritical_params`: A `HashmapE 8 uint32` map from parameter IDs to raw 32-bit values.

Inherited from [Param 29](https://tonviewer.com/config#29):
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this link points at tonviewer's #29 anchor, but in the param 30 intro (line 515) the same reference uses the internal anchor [ConfigParam 29](/foundations/config#param-29-consensus-config)

should we keep them consistent? @reveloper the internal anchor is also what the style guide prefers for cross-page references (see links)

Suggested change
Inherited from [Param 29](https://tonviewer.com/config#29):
Inherited from [Param 29](/foundations/config#param-29-consensus-config):

Comment thread foundations/config.mdx
`consensus_config_v4#d9` was introduced together with the [Catchain 2.0 / Simplex](https://github.com/ton-blockchain/simplex-docs/blob/main/Simplex.md) migration tracked by [Param 30](#param-30-consensus-extension). The `use_quic` toggle in Param 29 controls the transport for the legacy Catchain path; the `use_quic` toggle in Param 30 controls the transport for the new Simplex path. They are configured independently.
</Aside>

[Parameter #29 on mainnet](https://tonviewer.com/config#29)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

small dup: the same Parameter #29 on mainnet link already shows up at line 467 (For up-to-date values, see [Parameter #29 on mainnet](...)), so this trailing standalone link is redundant after the rewrite. probably it makes sense to drop one of them?

Suggested change
[Parameter #29 on mainnet](https://tonviewer.com/config#29)

Comment thread foundations/config.mdx

#### On-chain schema

`ConfigParam 29` is a tagged union: validators must accept any of the legacy constructors so old serialized configs keep parsing, but new on-chain values are written using the latest tag. The current set defined in [`block.tlb`](https://github.com/ton-blockchain/ton/blob/af252bcdaea357fee21739e984654c2c84e7d61d/crypto/block/block.tlb#L782) is:
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this block.tlb reference pins a commit hash (af252bcdae...), but the param 30 section a few hundred lines down pins a tag (v2026.04). both are stable, mixing them in adjacent sections looks accidental. could we settle on one form - probably the tag since it matches the release-note Aside in param 30?

Suggested change
`ConfigParam 29` is a tagged union: validators must accept any of the legacy constructors so old serialized configs keep parsing, but new on-chain values are written using the latest tag. The current set defined in [`block.tlb`](https://github.com/ton-blockchain/ton/blob/af252bcdaea357fee21739e984654c2c84e7d61d/crypto/block/block.tlb#L782) is:
`ConfigParam 29` is a tagged union: validators must accept any of the legacy constructors so old serialized configs keep parsing, but new on-chain values are written using the latest tag. The current set defined in [`block.tlb`](https://github.com/ton-blockchain/ton/blob/v2026.04/crypto/block/block.tlb#L782) is:

and the same line 436 in the Aside above

Comment thread foundations/config.mdx
Comment on lines +589 to +590
| `9` | `standstill_max_egress_bytes_per_s` | `uint32` number | `6,553,600` (`50 << 17`) | Egress rate cap used during standstill rebroadcast. |
| `10` | `max_leader_window_desync` | `uint32` number | `250` | Maximum tolerated future leader-window distance for inbound Simplex traffic. |
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tiny inconsistency in the Stored as column: rows for IDs 9, 10, 12 use uint32 number while the rest are uint32 milliseconds / float32 bits in uint32. number adds no info that uint32 doesn't already carry

wdyt to drop the suffix on the dimensionless rows so the column reads uint32 / uint32 milliseconds / float32 bits in uint32?

Suggested change
| `9` | `standstill_max_egress_bytes_per_s` | `uint32` number | `6,553,600` (`50 << 17`) | Egress rate cap used during standstill rebroadcast. |
| `10` | `max_leader_window_desync` | `uint32` number | `250` | Maximum tolerated future leader-window distance for inbound Simplex traffic. |
| `9` | `standstill_max_egress_bytes_per_s` | `uint32` | `6,553,600` (`50 << 17`) | Egress rate cap used during standstill rebroadcast. |
| `10` | `max_leader_window_desync` | `uint32` | `250` | Maximum tolerated future leader-window distance for inbound Simplex traffic. |

Comment thread foundations/config.mdx
Comment on lines +528 to +532
simplex_config_v2#22 flags:(## 7)
use_quic:Bool
slots_per_leader_window:uint32
noncritical_params:(HashmapE 8 uint32)
= NewConsensusConfig;
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

small but worth double-checking against the upstream block.tlb at v2026.04 line 782: consensus_config_v4#d9 (line 492 here) has flags:(## 6) { flags = 0 }, while both simplex_config#21 and simplex_config_v2#22 have flags:(## 7) with no { flags = 0 } constraint. is that intentional, or did the flags = 0 predicate just get dropped in the copy? if the upstream schema does require flags = 0 for the simplex configs too, we should keep it here for reviewers who use this page as the spec reference

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Foundations > Config and limits] Update config for [04.2026] release

3 participants